package com.csx.governance.traffic.adm.service;

import com.csx.governance.traffic.adm.model.bo.ServiceInfoBO;
import com.csx.governance.traffic.adm.model.dto.ServiceInfoDTO;
import com.csx.governance.traffic.adm.model.vo.ImportResultVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 应用服务
 * @author cuisongxu
 * @date 2023/4/24 16:09
 */
public interface ApplicationService {

    /**
     * 获取服务列表
     * @return 服务列表
     */
    List<ServiceInfoDTO> getServices();

    /**
     * 根据服务名获取服务
     * @param serviceName 服务名
     * @return 服务信息
     */
    ServiceInfoDTO getService(String serviceName);

    /**
     * 新增服务
     * @param serviceInfoBO 新增的服务信息
     */
    void addService(ServiceInfoBO serviceInfoBO);

    /**
     * 修改服务
     * @param serviceInfoBO 修改的服务信息
     */
    void updateService(ServiceInfoBO serviceInfoBO);

    /**
     * 删除服务
     * @param serviceNames 需要删除的服务名列表
     */
    void deleteServices(List<String> serviceNames);

    /**
     * 下载模板
     * @param response 响应对象
     */
    void downloadTemplate(HttpServletResponse response);

    /**
     * 导出服务列表
     * @param serviceNames 服务名列表
     * @param response 响应对象
     */
    void exportServices(List<String> serviceNames, HttpServletResponse response);

    /**
     * 导入服务列表
     * @param content 导入内容
     * @param repeatStrategyCode 重复处理策略码: 0: 跳过; 1 覆盖; 2 终止
     * @return
     */
    ImportResultVO<List<String>> importServices(String content, Integer repeatStrategyCode);
}
